package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.doctor.DoctorDetailApply;
import com.dd.cloud.user.req.doctor.DoctorDetailApplyAuthReq;
import com.dd.cloud.user.req.doctor.DoctorDetailApplyPageReq;
import com.dd.cloud.user.req.doctor.DoctorDetailApplyReviewPageReq;
import com.dd.cloud.user.req.doctor.DoctorDetailApplyReviewReq;
import com.dd.cloud.user.res.doctor.DoctorDetailApplyDetailRes;
import com.dd.cloud.user.res.doctor.DoctorDetailApplyLastTipRes;
import com.dd.cloud.user.res.doctor.DoctorDetailApplyPageRes;
import com.dd.cloud.user.res.doctor.DoctorDetailApplyReviewPageRes;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author Lx
 * @version 1.0
 */
public interface IDoctorDetailApplyService extends IService<DoctorDetailApply> {
    /**
     * 医生(认证申请/修改资料/互联网执业备案)提交申请
     *
     * @param req
     */
    void addDoctorDetailApplyAuth(DoctorDetailApplyAuthReq req);

    /**
     * 查询医生最后一次(认证申请/修改资料/互联网执业备案)信息状态
     * 医生id不传默认当前登录医生id
     *
     * @param docId
     * @param type
     * @return
     */
    Map<String, Integer> getDoctorDetailApplyLastStatus(Integer docId, Integer type);

    /**
     * 查询医生最后一次(认证申请/修改资料/互联网执业备案)审核提示
     * 医生id不传默认当前登录医生id
     *
     * @param docId
     * @param type
     * @return
     */
    DoctorDetailApplyLastTipRes getDoctorDetailApplyLastTip(Integer docId, Integer type, HttpServletRequest request);

    /**
     * 查询医生最后一次(认证申请/修改资料/互联网执业备案)信息记录
     * 医生id不传默认当前登录医生id
     *
     * @param docId
     * @param type
     * @return
     */
    DoctorDetailApplyDetailRes getDoctorDetailApplyDetailLast(Integer docId, Integer type);

    /**
     * 医生(认证申请/修改资料/互联网备案) 审核
     *
     * @param req
     */
    void doctorDetailApplyReview(DoctorDetailApplyReviewReq req);

    /**
     * 查询医生认证/信息修改申请记录 分页
     *
     * @param req
     * @return
     */
    IPage<DoctorDetailApplyPageRes> queryDoctorDetailApplyPage(DoctorDetailApplyPageReq req);

    /**
     * 查询医生认证/信息修改审核记录 分页
     *
     * @param req
     * @return
     */
    IPage<DoctorDetailApplyReviewPageRes> queryDoctorDetailApplyReviewPage(DoctorDetailApplyReviewPageReq req);

    /**
     * 查询医生认证/信息修改申请记录详情
     *
     * @param applyId
     * @return
     */
    DoctorDetailApplyDetailRes queryDoctorDetailApplyDetailRes(Integer applyId);

//    DoctorDetailApplyLastTipRes getPcDoctorDetailApplyLastTip(Integer docId, Integer type);
}
